iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
自我挑戰組

Python Discord Bot(DC機器人)系列 第 20

Python Discord Bot#20 - 做中學-管理員限定!

  • 分享至 

  • xImage
  •  

想針對指令加上使用條件。

管理員的權限

user_command(message_command) 版本

import discord
from discord.ext import commands

@Bot.user_command(name="簽到資訊", description="顯示該成員的簽到資訊")
@commands.is_owner() # 管理員才能用
async def get_member_info(ctx, member: discord.Member):
    await ctx.send_response("功能處理")
    
# 錯誤顯示
@get_member_info.error
    async def get_member_info_error(ctx, error):
      if isinstance(error, commands.NoPrivateMessage):
        await ctx.send_response("這個只能在伺服器裡才能用")
      else:
        await ctx.send_response("你沒有權限喔www不可以偷偷來")

https://ithelp.ithome.com.tw/upload/images/20230920/20106071mjhX8ZYjXy.png
https://ithelp.ithome.com.tw/upload/images/20230920/20106071pTaE02BWT7.png

command 版本

@Bot.command(name="簽到資訊")
@commands.is_owner() # 管理員才能用
async def get_member_info_command(ctx: commands.Context):
      if (ctx.can_send()):
        await ctx.author.send("已上傳")
        
# eventMgr.py 
@client.event
  async def on_command_error(ctx, error):
    if isinstance(error, commands.MissingPermissions):
      await ctx.author.send("你沒有權限喔www不可以偷偷來")
    elif isinstance(error, commands.BotMissingPermissions):
      await ctx.author.send("你沒有權限喔www不可以偷偷來Bot")
    elif isinstance(error, commands.NotOwner):
      await ctx.author.send("你沒有權限喔www不可以偷偷來")

https://ithelp.ithome.com.tw/upload/images/20230920/20106071yL8R4QxorO.png

只有你看的到!

在測試的期間,想必很多人看到了錯誤時出現的內容「只有您才能看到這些」,
而我也想要!!所以找到了處理方法。
https://ithelp.ithome.com.tw/upload/images/20230920/20106071IfrudTgMpB.png
send_response 加入參數 ephemeral = True,
ephemeral 目前只有 ctx:discord.ApplicationContext 才有類似的參數,
但@command 沒有

    await ctx.send_response("你沒有權限喔www不可以偷偷來", ephemeral=True)

https://ithelp.ithome.com.tw/upload/images/20230920/20106071oE7h3M02VL.png
https://ithelp.ithome.com.tw/upload/images/20230920/20106071jvuindjJKG.png


上一篇
Python Discord Bot#19 - 做中學-會員簽到(二) - 進階題
下一篇
Python Discord Bot#21 - 做中學-指令限定
系列文
Python Discord Bot(DC機器人)31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言